In a voice or video communication system, data processing resources, such as processor cycles or processing time, is frequently allocated among multiple instances of a software component, where such instances are created to handle multiple communication channels. For example, a voice communications system such as a telephone system can include multiple instances of a software component that cancels echoes in signals transmitted over various channels. One method of allocating processing resources to a channel is to compute the worst-case requirement for each channel, and allocate the worst case number of cycles to each channel.
In many voice or video communications systems, these multiple instances of software components are of the type that can tolerate certain losses of data, or a certain amount of unprocessed data, without significantly affecting a quality of service level. For example, if the echoes in one frame of voice data were not precisely canceled, the user will probably not notice, and parameters that set the quality of service will probably not be violated.
Since data processing resources, such as processing cycles, are likely an expensive addition to the design of data communication equipment, it is desirable to maximize the use of the available data processing resources, and to provide a maximum level of data processing service with a minimum level of data processing resources.